package 滑动窗口And双指针;

/**
 * @author aodre , QQ : 480029069
 * @date 2023/1/7 9:53
 */
public class leetcode1658x减到0最小操作数 {



    /*
    灵神 的双指针的练习 题lc
     https://leetcode.cn/problems/minimum-operations-to-reduce-x-to-zero/solutions/2048811/ni-xiang-si-wei-pythonjavacgo-by-endless-b4jt/


     b站视频:
     https://www.bilibili.com/video/BV1hd4y1r7Gq/?vd_source=179da737184de5a8f84e4f6c2ee5c350

    滑动窗口And双指针.双指针 滑动窗口都是 一个 概念.只是称呼的 方式会因人而异!

     */










    /*
     f（start，end，rest） rest 的范围是 1 ~ 10 ^ 9 这显然 不是让 你 用动态规划 来做的!
     */

    /*
      这个也算是一种新的 的  暴力递归的方式
      填表的 方式 需要 去思考一下这种题型的填表的方式
     */

    public int recursion(int start,int end,int rest,int []nums){
        if(rest == 0){
            return 0;
        }
        if(start > end){
            return 10000;
        }

    // 下面这样写 有些麻烦啊
//        if(start == end){
//            return rest - nums[end] == 0 ? 1 :10000;
//        }
        int ans = 0;
        ans = recursion(start + 1,end,rest - nums[start],nums) + 1;
        ans = Math.min(ans,recursion(start,end - 1,rest - nums[end],nums) + 1);
        return ans;
    }

}
